﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Objects.DataClasses;

namespace LojaEmDia.Cadastro
{
    public partial class frmCliente : LojaEmDia.Cadastro.frmBase
    {
        public List<Negocio.CLIENTE> dsClientes;
        public frmCliente()
        {
            InitializeComponent();
            this.dsClientes = new List<Negocio.CLIENTE>(); 

            this.dataGridView1.AutoGenerateColumns = false;
            this.dataGridView1.DataSource = this.bdsDataSet;
            this.bdsDataSet.DataSource = this.dsClientes;
            this.CarregarCombos();
        }

        private void CarregarCombos()
        {
            this.cboEstado.DataSource = Negocio.Faced.NegocioFaced.Me.ListarEstado();
            this.cboEstado.DisplayMember = "NOM_ESTADO";
            this.cboEstado.ValueMember = "COD_ESTADO";
        }

        protected override void OnNovo(object sender, EventArgs e)
        {
            
            Negocio.CLIENTE novoCliente = new Negocio.CLIENTE();
            novoCliente.NOM_CLIENTE = "Informe o cliente";
            this.bdsDataSet.Add(novoCliente);
            this.bdsDataSet.Position = this.bdsDataSet.Count - 1; 
            this.tabControl1.SelectedTab = tabCadastro;
            base.OnNovo(sender, e);
        }


        protected override void OnSave(object sender, EventArgs e)
        {
            try
            {
                this.bdsDataSet.EndEdit();
                if (this.Validar())
                {
                    Negocio.Faced.NegocioFaced.Me.Salvar(this.dsClientes);
                    base.OnSave(sender, e);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro na operação", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private bool Validar()
        {
            if (this.txtNomeCliente.Text.Equals("Informe o cliente") || string.IsNullOrEmpty(this.txtNomeCliente.Text))
            {
                Util.ExibeErro("Informe o nome do cliente");
                return false;
            }
            return true;
        }

        protected override void OnPesquisar(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtCampoPesquisa1.Text) && txtPesquisaCPF.Text.Trim() == ".   .   -" )
            {
                Util.ExibeAlerta("Informe nome ou cpf para pesquisar.");
                return;
            }
            this.dsClientes =  Negocio.Faced.NegocioFaced.Me.PesquisarCliente(this.txtPesquisaCPF.Text, this.txtCampoPesquisa1.Text);
            base.OnPesquisar(sender, e);
            this.bdsDataSet.DataSource = this.dsClientes;
          
            
        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1)
            {
                this.tabControl1.SelectedTab = this.tabCadastro;
            }
        }

        private void frmCliente_FormClosing(object sender, FormClosingEventArgs e)
        {
            foreach (Negocio.CLIENTE c in this.dsClientes)
            {
                if (c.EntityState == EntityState.Modified ||
                    c.EntityState == EntityState.Added ||
                    c.EntityState == EntityState.Deleted ||
                    c.EntityState == EntityState.Detached)
                {
                    if (MessageBox.Show("Existem alterações pendentes! Deseja sair sem salvar?", "Atenção", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Cancel)
                    {
                        e.Cancel = true;
                    }
                    break;
                }
            }

        }

        private void cboEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.cboEstado.SelectedValue == null)
                return;
            int codigo = 0;
            if (cboEstado.SelectedValue is Negocio.ESTADO)
                codigo = ((Negocio.ESTADO)cboEstado.SelectedValue).COD_ESTADO;
            else
                codigo = (int)this.cboEstado.SelectedValue;
            this.cboCidade.DataSource = Negocio.Faced.NegocioFaced.Me.ListarCidadePorEstado(codigo);
            this.cboCidade.DisplayMember = "NOM_CIDADE";
            this.cboCidade.ValueMember = "COD_CIDADE";
        }

        private void btnNovoFabricante_Click(object sender, EventArgs e)
        {
            frmCidade cd = new frmCidade();
            cd.ShowDialog();
            this.cboEstado_SelectedIndexChanged(sender, e);
            
        }

    
    

            

    
      

      
    }
}
